Caller-callee association of a plurality of networked devices with direct dial through thin client

ABSTRACT

The present disclosure generally relates to systems and methods for establishing and maintaining communication between two or more communication devices coupled to a communication networks. Some specific aspects relate to communication between a plurality of communication devices each of which is coupled to a respective network. Other aspects relate to establishing such communication by way of contact lists maintained and facilitated on systems coupled to the networks. Users of multiple communication networks, such as VoIP, PSTN and wireless, employ multiple communication devices to communicate with their contacts. For example, a VoIP enabled computer is necessary to access contacts on a VoIP network and a mobile or cellular telephone is used to access contacts on wireless and PSTN networks. A contact list, stored on one communication device, in some instances, cannot be accessed from another communication device. For example, a contact list stored in a VoIP enabled computer cannot be accessed from PSTN or wireless phone devices. Various embodiments described herein provide a convenient solution that can integrate contacts stored on different communication devices and make them accessible from a single device.

REFERENCE TO RELATED APPLICATIONS

This application is divisional of U.S. patent application Ser. No.11/679,518, which is a continuation in part of pending U.S. patentapplication Ser. No. 11/435,200, entitled “Caller-Callee Association ofa Plurality of Networked Devices,” filed on May 15, 2006, which claimsthe benefit of U.S. Provisional Application No. 60/694,674, entitled “ASystem for Personal Switching and Routing,” filed on Jun. 29, 2005; No.60/700,749, entitled “A Method for a User Provisioned CommunicationClient With Presence,” filed on Jul. 20, 2005; No. 60/706,047, entitled“A Method for a Set of Personalized Extensions,” filed on Aug. 8, 2005;No. 60/718,305, entitled “Personalized Extensions,” filed on Sep. 20,2005; No. 60/749,580, entitled “VoIP Service Extensions,” filed on Dec.13, 2005; No. 60/762,901, entitled “VoIP Thin Client,” filed on Jan. 30,2006; and No. 60/765,198, entitled “A Method for Correlating a Callerwith a Callee,” filed on Feb. 6, 2006, all of which are hereby fullyincorporated by reference. This application also finds support andincorporates by reference U.S. Provisional Application No. 60/644,571,entitled “A system for a local access to a mobile network,” and U.S.patent application Ser. No. 11/333,533, entitled “Local Access to aMobile Network”, and also claims priority to U.S. ProvisionalApplication No. 60/777,244, entitled “Direct Dial,” filed on Feb. 28,2006, which is hereby incorporated by reference.

BACKGROUND

Systems for communicating voice information have been in use for sometime, and typically include telephone communication systems.Communication systems and methods for using traditional telephones,including analog and digital systems have evolved to use variouscommunication networks. These networks and supporting systems include“plain old telephone service” (POTS), public switched telephone networks(PSTN), cellular networks for mobile phones, and others. More recently,the Internet has also been used to carry real-rime or near real-timevoice communication signals from one point to another. Routing,switching, bridging, and other methods of packaging and delivering datafrom voice communications is in use but continues to evolve. Moreeffective, less costly, and better quality communication systems andmethods for using the same are needed, which this disclosure provides.

SUMMARY

The present disclosure generally relates to systems and methods forestablishing and maintaining communication between two or morecommunication devices coupled to communication networks. Some specificaspects relate to communication between a plurality of communicationdevices each of which is coupled to a respective network. Other aspectsrelate to establishing such communication by way of contact listsmaintained and facilitated on systems coupled to the networks.

FIG. 1 illustrates a network having multiple paths for communication ofinformation through and over the network. In fact, more than one networkcan be coupled through ways known to those skilled in the art such asrouting, bridging and the like. The end effect is to create a system ofinterconnected components which can exchange data to communicateinformation therebetween.

The data is commonly digital in nature in modern communication systems,but the present discussion is not so limited. For example, electronicsignals, pulses, optical, acoustical, and other electromagnetic meansfor modulating communication signals can be used to communicateinformation across one or more legs of a network or networks. Thesignals may travel across the network or networks substantially in realtime, with only the propagation delays associated therewith. The signalsmay alternately be interrupted by intervening components on the networkor networks, buffered, stored, routed, bridged, etc., which introducesother latencies and delays into the propagation.

One goal of communication systems is to allow two or more devices, orusers thereof, to exchange information, usually across some geographicalor logical distance from one another. An example of this is a telephone,whether hard wired or wireless. Another example is a pair ofcommunicating peer computers exchanging messages over the Internet.Internet communication is well-established and provides protocols fordata transfer, such as the Internet Protocol (IP).

FIG. 1 specifically shows several interconnected networks and devicesthat provide telephonic (e.g., voice) communication between two or morecommunication devices coupled to the collection of networks and devices.The interconnected networks and devices include a Public SwitchedTelephone Network (PSTN) 11, a Voice over Internet Protocol (VoIP)network 31 and a wireless network 51.

PSTN 11 is a collection of interconnected public telephone networks,designed primarily for voice communications. It also comprises acollection of Private Branch Exchange (PBX) systems 20 that provideswitching functionality for a collection of telephones 10. PBX systemsare usually used in the office or campus environment. When a telephone10 is registered on the PBX network, it is usually assigned anidentifier, such as an extension. Other members of the PBX and PSTNnetworks can access the telephone 10 using the appropriate extension.

Wireless networks 51 deliver voice and data information to wirelesstelephones 60. Wireless telephones 60 are small, light devices thatcommunicate with other devices by transmitting radio signals.Unfortunately, wireless phone communications are still expensive,especially when used for making long-distance and international calls.

VoIP networks 31 deliver voice and data over the Internet Protocol. Theyprovide a free or very inexpensive way to transmit a voice signal fromone location to another. VoIP networks 31 are also used to provideintermediate connections for other communication networks. For instance,FIG. 1 shows a PSTN network 11 communicating with a wireless network 51over the VoIP network 31. Telephone 10 sends a voice signal to the PBX20. PBX 20 forwards the signal to the PSTN/VoIP Gateway 30. PSTN/VoIPGateway 30 forwards the signal to the VoIP/Mobile gateway 40.VoIP/Mobile gateway forwards the signal to the Gateway Mobil SwitchingCenter (GMSC) 50. GMSC 50 transmits the signal to the destinationwireless phone 60. Some of the intermediate connections are not shown onthis signal flow diagram.

VoIP Network 31 also supports voice communications between VoIP enabledcomputers 35 and 45. VoIP enabled computer 35 connects to the VoIPenabled computer 45 using a network identifier, such as an IP address,user name or a contact access code. After the connection is established,VoIP enabled computer 35, either directly or indirectly (by using aserver, not shown on FIG. 1), transfers a digitized voice signal overthe VoIP network to the VoIP enabled computer 45. In one embodiment,VoIP enabled computer 45 converts the digital signal back to the analogand presents it to the user. Some of the intermediate connections arenot shown on this signal flow diagram.

Multiple VoIP service providers use different communication protocolsand software applications to transmit the digitized voice signal fromone VoIP enabled computer to another. Consequently, one VoIP softwareapplication may have difficulties or be completely unable to communicatewith another VoIP software application. For example, a member of a firstnetwork may have difficulties communicating with a member of a secondnetwork.

VoIP Networks 31, also provide an inexpensive way to establish voicecommunications between VoIP enabled computers 35 and telephones residingon PSTN networks 11 and wireless networks 51. Various VoIP serviceproviders bridge the communication between VoIP, PSTN and wirelessnetworks by translating the communication protocol of one network intothe communication protocol of another. For example, customers of a VoIPservice pay for an option to make phone calls from the VoIP enabledcomputers to PSTN or wireless phones. Similarly, some customers pay foran option to receive phone calls from PSTN or Wireless phones on theirVoIP phone devices.

When the communication, targeted to a VoIP enabled computer is initiatedby a member of a PSTN or a wireless network, the signal needs to beappropriately delivered to the targeted VoIP enabled computer.Generally, PSTN or wireless phone devices use a regular phone numberthat eventually gets translated into an address of the appropriate VoIPenabled computer. This address may be represented by a network IPaddress, user name, email address or a contact access code assigned tothe VoIP enabled computer by the service provider.

One or more embodiments disclosed herein provide a method forestablishing communication between a first device and a second device,including, at a server, receiving a communication request from saidfirst device coupled to said server over a network; at the server,receiving a caller identification code from said first deviceidentifying said first device or its user; at the server, receiving analphanumeric code from said first device identifying a callee user ofsaid second device; at the server, associating said alphanumeric codewith a callee address stored at the server, said caller identificationand said alphanumeric code and said callee address all being associatedwith a contacts list accessible to said server; and responsive to saidcommunication request and said alphanumeric code and associated calleeaddress, the server establishing said communication between said firstdevice and said second device associated with said callee address suchthat said first and second devices communicate over said network.

Other embodiments are directed to a method further comprising providingfrom said server to said first device information corresponding to saidcontacts list and including information indicative of a state ofpresence of at least one contact in said contacts list.

Other embodiments are directed to a method wherein said state ofpresence comprises a state on being presently connected to acommunication network.

Other embodiments are directed to a method wherein said state ofpresence comprises a permission state indicating that communication withsaid second device is permissible.

Other embodiments are directed to a method wherein said server carriesdata from voice communication signals between said first and seconddevices.

Other embodiments are directed to a method wherein said server passessaid callee address to a second server that carries data from voicecommunication signals between said first and second devices.

Other embodiments are directed to a method further comprising receivingat a second server a telephone call from said first device, saidtelephone call being served to its destination by said second serverfollowing said second server obtaining destination information from saidserver, said destination information including a callee network address.

Other embodiments are directed to a method wherein associating saidalphanumeric code and said callee address comprises looking up a networkaddress of a user represented on said server by said alphanumeric codefrom a contacts lists associated with a user of said first device.

Other embodiments are directed to a method wherein said looking upcomprises looking up said network address on an address server thatprovides address lookup services to said server.

Other embodiments are directed to a method further comprisingauthenticating a contacts list update request from the first device.

Other embodiments are directed to a method further comprisingauthenticating the communication request from the first device.

Other embodiments are directed to a method wherein said alphanumericcode comprises a plurality of any of the standard ASCII characters.

Other embodiments are directed to a method wherein said alphanumericcode consists of a plurality of characters in the alphabetical range “A”through “Z”.

Other embodiments are directed to a method wherein said alphanumericcode consists of a plurality of characters selected from thealphabetical range “A” through “Z” and numbers from the integer range“0” (zero) through “9”.

Other embodiments are directed to a method wherein said method providescommunication between a first mobile communication device and a secondmobile communication device.

Yet other embodiments are directed to a method for establishingcommunication between a first device and a second device, includingreceiving from the first device a contacts update request includingfirst device identification information; responsive to said contactsupdate request, sending to the first device a contacts list associatedwith the first device identification information, said contacts listincluding a contact identifier for each contact in the contacts list;receiving from the first device a connection request, the connectionrequest identifying at least one contact identifier; mapping saidcontact identifier to an address of the second device; and using saidaddress of the second device to establish communication between thefirst device and the second device.

Other embodiments are directed to a method further comprisingauthenticating the contacts update request from the first device.

Other embodiments are directed to a method further comprisingauthenticating the connection request from the first device.

Other embodiments are directed to a method further comprising indicatingto the first device which contacts from said contacts list are currentlyavailable for communication.

Other embodiments are directed to a method wherein indicating whichcontacts are currently available further comprises referencing presenceinformation for said contacts to determine which contacts are currentlyavailable for communication.

Other embodiments are directed to a method further comprisingestablishing a digital communication connection to the first device overwhich said contacts list information is passed.

Other embodiments are directed to a method wherein establishing saiddigital communication connection comprises establishing said digitalcommunication connection over a SIP compatible channel.

Other embodiments are directed to a method further comprisingestablishing a voice communication connection between said first andsecond devices.

Other embodiments are directed to a method wherein establishing saidvoice communication connection comprises establishing a voicecommunication connection over a SS7 compatible channel.

Other embodiments are directed to a method wherein establishing saidvoice communication connection comprises establishing a voicecommunication connection using a telephony communication standardprotocol.

Other embodiments are directed to a method wherein the first devicecomprises a wireless telephony communication device.

Other embodiments are directed to a method wherein the second devicecomprises a voice over IP communication device.

Other embodiments are directed to a method further comprisingcorrelating said contact identifier with an IP address associated withsaid second device.

Other embodiments are directed to a method further comprisingcorrelating said contact identifier with a telephone number associatedwith said second device.

Other embodiments are directed to a method further comprising couplingat least two networks to establish said communication between said firstand second devices, said at least two networks including at least aPSTN.

Other embodiments are directed to a method further comprising couplingat least two networks to establish said communication between said firstand second devices, said at least two networks including at least an IPnetwork.

Other embodiments are directed to a method further comprising couplingat least two networks to establish said communication between said firstand second devices, said at least two networks including at least acellular communication network.

Other embodiments are directed to a method further comprising updatingsaid contacts list on a server coupled to a communication network thatcan be in turn coupled to said first device.

Other embodiments are directed to a method further comprising updatingsaid contacts list on a server coupled to a communication network thatcan be in turn coupled to said second device.

Other embodiments are directed to a method wherein establishing saidcommunication comprises bridging a communication between a first PSTNcompatible network and a second voice over IP compatible network.

Other embodiments are directed to a method further comprisingmaintaining a plurality of contacts lists associated with a first peeruser of said first device, said plurality of contacts lists being keptin a corresponding plurality of databases, each database including acorresponding contacts list.

Other embodiments are directed to a method wherein said plurality ofdatabases are coupled to a plurality of servers.

Other embodiments are directed to a method further comprisingredirecting said first device's connection request to one of a pluralityof servers adapted for processing said communication between said firstand said devices.

Other embodiments are directed to a method further comprisingredirecting voice communication packets exchanged between said first andsecond devices through at least one server coupled to both a firstnetwork associated with said first device and to a second networkassociated with said second device.

Other embodiments are directed to a method wherein said at least oneserver communicates with said first network over a first communicationprotocol and communicates with said second network over a secondcommunication protocol.

Other embodiments are directed to a method wherein said method providescommunication between a first mobile communication device and a secondmobile communication device.

Still other embodiments are directed to a system for establishingcommunication between a first device and a second device, including acommunication port adapted to receive from the first device a contactsupdate request including first device identification information; a datastorage unit that stores a contacts list associated with said firstdevice identification information, said contacts list including acontact identifier for each contact in the contacts list: a processorcoupled to said communication port and coupled to said data storage unitthat receives said contacts update request by way of said communicationport and responds to said contacts update request by sending informationfrom said contacts list to the first device by way of said communicationport, said processor further adapted to receive from the first device aconnection request by way of said communication port, the connectionrequest identifying at least one contact identifier; said processorfurther adapted to associate said contact identifier with an address ofthe second device; and said processor further adapted to using saidaddress of the second device to establish communication between thefirst and second devices.

Other embodiments are directed to a system wherein said processor isdisposed on a server adapted to communicate over a communication channelwith said first and second devices.

Other embodiments are directed to a system wherein said processor isdisposed on a server adapted to communicate with said first device overa first communication channel and with said second device over a secondcommunication channel.

Other embodiments are directed to a system wherein said firstcommunication channel comprises a mobile network and said secondcommunication channel comprises a voice over IP (VoIP) network.

Other embodiments are directed to a system further comprising a secondcommunication port adapted for communicating with said second device.

Other embodiments are directed to a system wherein said processorcomprises a server running a first process that communicates with saidfirst device using a first communication protocol and communicates withsaid second device using a second communication protocol.

Other embodiments are directed to a system wherein said processor isadapted for establishing communication between the first, second, and athird device.

Other embodiments are directed to a system further comprising a datastructure stored on said data storage device, said data structureincluding information corresponding to said contacts and furtherincluding information corresponding to a state of said contacts.

Other embodiments are directed to a system wherein said state comprisesa state of presence on a network.

Other embodiments are directed to a system wherein said method providescommunication between a first mobile communication device and a secondmobile communication device.

And other embodiments are directed to a system for providingcommunication between a first device coupled to a mobile network and asecond device coupled to a data network, including a first servercomputer coupled to said first device through at least said mobilenetwork using a mobile communication protocol; a first data storageapparatus, coupled to said first server computer, having a contacts listassociated with said first device, said contacts list includinginformation corresponding to a plurality of contacts, and said contactslist corresponding to first device identification information; a secondcomputer, coupled to said first server computer through at least a datanetwork; and a second data storage apparatus, coupled to said secondcomputer, having data scored thereon and usable to establish acommunication connection between said first server computer and saidsecond computer; wherein said second computer also being configured tocommunicate with a third computer using voice over internet protocol(VoIP) communication.

Still other embodiments are directed to a signaling system forestablishing communication between a first mobile telephony devicecoupled to a mobile telephony network and a second communication devicecoupled to a data network, including first communication means forsignaling communication between said first mobile telephony device and aserver; a data storage and retrieval means, coupled to said server, forstoring and maintaining a server contacts list of a plurality ofcontacts associated with said first mobile telephony device; a mobilecontacts list correlated with said server contacts list and indicativeof a state of information in said server contacts list, said mobilecontacts list being accessible by said first mobile telephony device toprovide a selected one or more contacts from said mobile contacts listto said server; and a second communication means for signalingcommunication between said second communication device and said serveraccording to an address correlation at said server correlating saidselected one or more contacts received over said mobile telephonynetwork with a corresponding data network address of said secondcommunication device.

Still other embodiments are directed to an apparatus for communicationover a network, including a data storage component for storing acontacts list on-board said apparatus; a display permitting perceptionof a state of a contact from said stored contacts list; a selectorpermitting entry of a selection to select at least said contact fromsaid stored contacts list; a transmitter that transmits a communicationrequest signal from said apparatus over said network, the communicationrequest signal including information corresponding to at least; anidentification of said apparatus caller identification code, and anidentification for said contact, said identification for said contactincluding a direct inward dial (DID) code for a destination associatedwith said contact.

Other embodiments are directed to an apparatus wherein said apparatuscomprises a mobile device communicating over a wireless cellularcommunication network.

Other embodiments are directed to an apparatus wherein the displaycomprises a screen that provides a visual display of a plurality ofcontacts from said contacts list and permits perception of a state ofpresence of said contact.

Other embodiments are directed to an apparatus wherein the selectorcomprises a hardware user interface element that is constructed toreceive an input from a user to select said contact from said storedcontacts list.

Other embodiments are directed to an apparatus further comprising areceiver permitting receipt of contacts list information from a serverover said network.

Other embodiments are directed to an apparatus wherein said state ofsaid contact comprises a state of availability of said contact forcommunication.

Other embodiments are directed to an apparatus wherein said state ofsaid contact comprises a permission state set by said contact indicatingwhether said contact may be called.

Other embodiments are directed to an apparatus wherein said transmittercomprises a digital transmission feature that transmits digitalinformation comprising: the identification of said apparatus calleridentification code, and said identification for said contact.

Some embodiments hereof are directed to a method for establishingcommunication between a first device and a second device, comprisinglogging into a server from said first mobile device, said logging incorresponding to a session identification data; receiving a set ofcontacts on said first mobile device from said server; selecting acontact corresponding to a contact identification data from said set ofcontacts on said first mobile device; generating association informationfrom at least said session identification data and said contactidentification data; and establishing a communication link over at leastan IP network from said first device through said server to said seconddevice using said association information.

Other embodiments are directed to a system for establishingcommunication between a first device and a second device, comprising afirst communication device coupled. by a wireless communication signalto a network which may itself comprise a plurality of interconnectednetworks one of which is an IP network; a second communication devicecoupled to said network; a server coupled to said network and comprisinga gateway and a mapper; wherein said mapper comprising informationpermitting an association of a contact of a user of said first deviceand a direct inward dial (DID) with a contact identification data.

In related embodiments, the above system comprises said firstcommunication device being a mobile telephone comprising a processor andsoftware that runs on the processor.

Still other embodiments include said first communication device having asmart phone comprising a processor and software that runs on theprocessor.

Yet other embodiments are directed to a system including acomputer-readable medium, the system facilitating communication betweena wireless mobile device and a communication system over an IP networkby way of a communications server, the computer-readable mediumcomprising a data storage element having data stored thereon, saidstored data associating a direct inward dial (DID) data and a contactinformation data for a user on said communication system to facilitate avoice communication between a user of said wireless mobile device and auser of said communication system, wherein the user of saidcommunication system is one of said wireless mobile system's user'scontacts and is identified by said contact information data.

Various features and advantages provided by the instant invention orinventions, as well as preferred systems and methods for implementingthe same are given below.

IN THE DRAWINGS

The invention(s) herein described, where helpful, have been described inpart by the following drawings, in which:

FIG. 1 illustrates an example network and associated communicationapparatus;

FIG. 2 illustrates an exemplary network and associated communicationapparatus for communication between at least a first and a seconddevice;

FIG. 3 illustrates another exemplary network and associatedcommunication apparatus for communication between at least a first and asecond device;

FIG. 4 illustrates an exemplary embodiment for communication between afirst peer telephone and a VoIP enabled computer;

FIG. 5 illustrates an exemplary sequence of steps for communicationusing the system of FIG. 4;

FIG. 6 illustrates an exemplary embodiment of a system with a serverhaving a buddy map and an authentication and registrar modules:

FIG. 7 illustrates an exemplary embodiment of a system having a serverand a sub-server;

FIG. 8 illustrates an exemplary' sequence of steps for communicationusing the system of FIG. 7;

FIG. 9 illustrates an exemplary embodiment of a system having a personalcomputer and a personal exchange router;

FIG. 10 illustrates an exemplary sequence of steps for communicationusing the system of FIG. 9;

FIG. 11 illustrates exemplary components of a personal computer systemaccording to one or more embodiments described herein;

FIG. 12 illustrates an exemplary sequence of steps for communicationaccording to one or more embodiments described herein;

FIG. 13 illustrates an exemplary sequence of steps for communicationaccording to yet other embodiments described herein;

FIG. 14 illustrates an exemplary embodiment of a system forcommunication using a local network coupled to a local computer and alocal PBX;

FIG. 15 illustrates an exemplary sequence of steps for communicationusing the system of FIG. 14;

FIG. 16 is a simplified pictorial illustration of a system for callercallee correlation, constructed and operative in accordance with apreferred embodiment of the present invention;

FIG. 17 is a simplified flowchart illustration of a method for callercallee correlation, operative in accordance with a preferred embodimentof the present invention.

FIGS. 18 and 19 disclose a system for VOIP communication having agateway with a Mapper element;

FIG. 20 illustrates an exemplary Mapper element according to the presentdisclosure;

FIGS. 21-23 illustrate exemplary method steps for establishingcommunication between two device users according to the presentinventions;

FIG. 24 illustrates an exemplary speed dial list correlating contacts orbuddies with speed dial codes; and

FIG. 25 illustrates an exemplary request for speed dial assignment userinterlace.

DETAILED DESCRIPTION

The method and apparatus described herein generally relates toestablishing a voice communication between multiple communicationdevices coupled to communication networks and thereby associating acaller (who initiates a call) and a callee (who is the subject of thecall initiated by the caller).

Users of multiple communication networks, such as VoIP, PSTN andwireless, employ multiple communication devices to communicate withtheir contacts. For example, a VoIP enabled computer is necessary toaccess contacts on a VoIP network and a mobile or cellular telephone isused to access contacts on wireless and PSTN networks. A contact list,stored on one communication device, in some instances, cannot beaccessed from another communication device. For example, a live oractive or dynamic contact list indicating which contacts are online andwhich are not (e.g. a state of presence) stored in a VoIP enabledcomputer normally cannot be accessed from PSTN or wireless phonedevices. Various embodiments described herein provide a convenientsolution that can integrate contacts stored on different communicationdevices and make them accessible from a single device.

FIG. 2 illustrates a system for establishing and carrying outcommunication between two users, which may be persons, U1 and U2,according to one or more embodiments disclosed herein. A first device D1owned or operated by a user U1 that are in wireless communication with awireless access point WAX over a wireless communication frequency orchannel such as those in use in cellular networks. The wireless accesspoint WAX comprises an antenna and receiver/transmitter hardware andsoftware to enable sending and receiving information to and fromwireless device D1. Wireless access point WAX is coupled to a basestation BS which comprises a processor and communication ports to handleprocessing and data exchange with wireless access point WAX and with oneor more other points on one or more networks coupled to base station BS.Therefore, base station BS can be considered a computer apparatus or anetwork apparatus or a communication apparatus or a server, and thenomenclature for this and other components coupled to the variousnetworks described herein is not limiting or specific to the exclusionof other forms of the components providing the same or equivalentfunctionality.

Base station BS is coupled to a server SVR, which may be a dedicatedcommunication server having a processor and a storage medium coupledthereto. Base station BS and server SVR are directly or indirectlycoupled to one another and configured to exchange data over a suitablechannel such as the General Packet Radio System (GPRS) or other digitalcommunication channel.

Base station BS is also coupled to a media gateway MGW, such as a SIPmedia gateway. Base station BS and media gateway MGW are arranged andconfigured to exchange information over a circuit switched (CS) or SS7protocol. The media gateway MGW may be in some embodiments a SIP mediagateway.

Additionally, media gateway MGW and server SVR are coupled, directly orthrough other network components that are not shown in the figure toeach other so that they may communicate using time domain multiplexing(TDM) or IP or another suitable or equivalent protocol.

Server SVR is coupled over an IP or similar or other appropriateprotocol to the second device D2. The server SVR and second device D2may typically be coupled over one or more legs of an Internet networkconnection, and other intermediate routers, gates, servers, andnetworking components that are not shown in the figure could intervenebetween server SVR and device D2. User U2 owns and/or operates seconddevice D2.

With the system arranged and configured as shown in exemplaryembodiments covered by FIG. 2 or those functionally equivalent thereto,communication may be established and maintained between devices D1 andD2 and their users, U1 and U2. Such communication can be initiated byeither party. Such communication may be substantially voice-based(speech) communication carried out substantially in real time or anapproximation thereof so that a “live” conversation is possible betweenusers U1 and U2. Other functions of speech and voice communicationsystems, e.g. voice messaging, forwarding, speech recognition,archiving, etc. are possible using this system and systems based thereonwith auxiliary and ancillary components not all of which are shown inthe figure, but which can be appreciated and adapted by those skilled inthe art upon appreciation of the present system and methods for its use.

In one or more embodiments, user U1 initiates a voice communication“call” to user U2. User U1 is thus the “caller” and user U2 is the“callee” in this scenario. The sequence begins with an action at thefirst device D1. The action can be an actuation of a feature of deviceD1 such as a button, knob, switch, area of a touch pad or touch screen,or a software feature. The action may also include or comprise voice orother types of actuation of an act on device D1, e.g. speech recognitionactuation of a command in software and/or hardware on device D1.

Device D1 having been acted on by user U1 and being in wirelesscommunication with wireless access point WAX is adapted for exchangingsignals and data across the wireless connection linking D1 and WAX. Ingridded cellular system, device D1 may be a cellular telephone equippedwith GPRS capability and may hop from one wireless access point toanother as the device is transported or handed off between cells in thegrid.

Device D1 and/or user U1 then “logs on” to server SVR over the portionsof the communication path or network between device D1 and server SVR.This process is generally known to those skilled in the art and involvesany of a number of authentication steps so that server SVR can determinethe identify of device D1 and/or its user U1 to an acceptable degree ofcertainty. This may involve an authentication sequence whereby device D1and/or user U1 provide a user name or a password to server SVR. Also,the identify of device D1 may be transmitted through a serial number orother coded hardware and/or software scheme that identifies theprocessor, a key, or software or other token on device D1. Server SVRmay look up the authentication log on information from device D1/user U1directly, e.g. on a lookup table, or using an authentication server orclient software on or coupled to or accessible to server SVR.

Communication between device D1 and server SVR can be accomplished bydevice D1 dialing (telephonic call) a predetermined telephone number,which is answered at media gateway MGW by a process programmed todeliver that communication or route or bridge the communication throughto server SVR. This can be generalized to other than the mode describedherein to include identification codes beyond the predeterminedtelephone number.

Server SVR may further receive from device D1 a request for anup-to-date contacts list that belongs to device D1 or user U1. That is,as described elsewhere in this document, a contacts list associated withuser U1 or device D1 may be kept on or accessible to server SVR that maychange with time and be editable and updateable. This contacts list canbe requested by device D1 with each log on, or may be requested or“pulled” by device D1 periodically or by an explicit request action fromuser U1. Alternately, the contacts list may be “pushed” by server SVR todevice D1 without device D1 or user U1 having requested or pulled thecontacts list. Once logged on and authenticated, device D1 is left witha contacts list or information therefrom that identifies at Least onecontact and contact information that relates to a property of saidcontact. The contact information may be for example a name, a telephonenumber, an address, a network identifier, or other information, and thecontact may be a person, an individual, or a group of persons with acommon association.

In one or more embodiments, the contacts list provided to device D1 fromserver SVR reflects a current or approximately current state such as anetwork presence state. So for example, if user U1's has severalcontacts or “buddies” in U1's contacts list on server SVR, a state ofconnectedness that reflects whether or not each contact is presentlyconnected to the network can be updated and indicated in the informationdelivered to device D1 as part of the contacts list information. Aspecial field with a ON/OFF flag or digit may for example indicatewhether each of the contacts in the contacts list is currently loggedinto their network and is therefore possibly reachable by U1. If acontact is off the network or his or her device D2 is not connected,then this can be an indication that user U1 may not be able to initiatea call to that contact. In some specific embodiments, user U1 isprevented from attempting to call other contacts who are not connectedto the communication network, for example by “graying out” theiridentifiers in a display of contacts on device D1. One way that deviceD1 identifies itself to server SVR is to provide to server SVR a callerID indicating the source of the call (D1).

To establish a call to another party, or contact, the caller (U1)selects from the contacts list or information corresponding thereto ondevice D1 one or more callees. User U1 may use a button, wheel, touchscreen, touch pad, voice identification circuit and software or othermeans to scroll or navigate through the contacts list displayed ondevice D1. User U1 can then select a selected one or more callees fromhis or her contacts list appearing on device D1. The selected contact isgenerally in an alphanumeric code form rather than Arabic numerals, thealphanumeric form being a name or abbreviation or handle for thecontact. The caller U1 generally does not know the network address ofthe callee U2. Rather, caller U1 delivers the name of callee U2 (e.g.,“Mr. Smith”) to the network and server SVR. Server SVR on the networkthen correlates the alphanumeric code for callee U2 with callee U2'snetwork address using a lookup table, an algorithm, a code, or otherconversion or database operation that accomplishes the same orequivalent function.

Once the association has been made at server SVR to identify the networkaddress of callee U2 then server SVR can bridge the call between deviceD1 and device D2. Device D2 is typically a Voice over IP (VoIP) enabledcomputer or functionally similar device. In that case, the communicationbetween server SVR and second device D2 is performed over the IPprotocol and usually over the Internet network. With communicationsutilizing the Internet, one or many intermediate gateways, routers, andbridges may handle and process the communication packets and dataflowing to and from the VoIP second device D2.

Note that in the event that a device or a component is required tocommunicate with more than one type of device using more than one typeof protocol, then the device or component may need to establish morethan one process or port, each port bundling communication with one ofthe said more than one protocols or ports. So for example, in the caseof the servers and gateways SVR and MGW shown in the figure, thesedevices communicate with at least an IP port and protocol as well aswith a telephony (CS/SS7, GPRS/Digital) port and protocol. This aspectis dependent on the construction and arrangement of the components andnetwork(s) employed and is not meant to be a complete description of thenature of the system generally.

Since server SVR generally has information regarding the end points ofthe communication, it is possible to use server SVR to accomplish aTDM-to-IP or a IP-to-IP or other communications bridging two or morecommunication ports and associated protocols. Client software running onone or more of the components of the system of the figure may beemployed to accomplish the establishment of the communication connectionbetween devices D1 and D2.

Now referring to FIG. 3, another exemplary embodiment is illustratedthat allows communication between a caller using device D1 and a calleeusing device D2.

The system of FIG. 3 operates substantially similarly to that of FIG. 2insofar as the nature of the components, network and protocols used toauthenticate the devices and users and insofar as the devices areprovided with and maintain contacts lists (“buddy lists); and presenceor network presence state information. However, in the embodiment shownm FIG. 3 rather than bridge the voice call information through serverSVR, the voice call information (speech data) is sent through the mediagateway MGW.

Server SVR in FIG. 3 still looks up or retrieves the contacts list usedto determine a network address from the alphanumeric (name) informationsent by the caller device. However, here server SVR is relieved of theprocessing and bandwidth overhead of handling the voice communicationinformation. Instead, server SVR is informed of the caller's intent tocall a named callee; the server SVR then determining the appropriatecallee network address (e.g., IP address) and provides that calleenetwork address to the media gateway MGW. In turn, media gateway MGW,using the received callee network address establishes the voice channelcommunication between devices D1 and D2.

FIG. 4 illustrates one system for connecting two communication devices,which can be extended to more than two devices using the same andsimilar principles as described below. The devices may be considered“peers” and connect two users or subscribers who desire to communicate,e.g. using voice communication. In this embodiment, a firstcommunication device is a telephone adapted for communication over aPSTN network and the second communication device is a computer adaptedfor communication over a data network using the voice over IP protocol.

A peer communication device is intended to reach any or all types ofdevices and apparatus constructed to provide communication according tothe methods and systems described herein and it is appreciated thatvarious communication infrastructures and protocols exist that can beused as a foundation for such communication. For example one type ofpeer device is a telephone. Telephones are intended to generally includewired and wireless or mobile or cellular or other types of devices thattransmit and/or receive acoustical information such as voiceconversation information. Modern telephones that can be adapted for usein the present concept include analog and digital telephones. Thetelephones can be coupled to a communication network through a twistedwire connection or through a high speed Internet connection or through acomputer or adapter having for example a USB interface to the telephone.The connection may also be established through intermediary adapters,connections, servers, hubs, or switches and routers. For example acellular telephone device conducts communication with a networkreceiving and transmitting signals using wireless radio wave signals toand from a base station coupled to a cellular network of such basestations.

Referring to FIG. 4, First Peer Telephone 150 connects to Server 110over a PSTN (Network) 140 and establishes a communication with the VoIPenabled computer 160. The connection between First Peer Telephone 150and Server 110 over PSTN 140 is carried out as specified by variousstandards created by the ITU-T organization for example, including theE.163/E.164 protocols that specify a telephone number addressing scheme.A typical PSTN leg of the connection involves carrying a digitized (e.g.at 8 kHz) voice signal to and from First Peer Telephone 150 andswitching the digitized signal using the Signaling System No. 7 (“SS7”)protocol (sometimes called the common channel signaling system No. 7)through the telephone network.

The arrangement illustrated in FIG. 4 permits a telephone user, forexample a mobile telephone user of First Peer Telephone device 150, tolog into for log on) Server 110 and be authenticated. The First PeerTelephone 150 may be equipped with the customary digital keypad capableof delivering alphanumeric characters or symbols over the telephonenetwork for such a purpose. For example a user of First Peer Telephone150 enters a user name and/or a password that can be verified orauthenticated by Server 110 which compares the entered authentication oridentification information of First Peer Telephone 150 with a set ofidentification information for known subscribers stored on Server 110 orin a database or lookup table associated therewith. Also, Server 110 mayrecognize a stored hardware and/or software code or identificationinformation associated with First Peer Telephone 150 such as caller ID),subscriber identity module (“SIM”) card for mobile phones, a processorserial ID number of the telephone hardware or a software or firmwarelicense serial number that identifies First Peer Telephone 150 to Server110,

Once Server 110 has authenticated or recognized the identity of FirstPeer Telephone 150 Server 110 is prepared m provide communication andrelated services to First Peer Telephone 150 as described throughoutthis document and as will be appreciated by those skilled in the art.

One feature and service of Server 110 can be the keeping, updating,maintenance, and serving of Contacts last information to a client.Contacts Lists are known m other contexts and communicationsapplications as a way of keeping a list or table of information relatingto one or more Contacts. Contacts can be individual persons or entitiesor machines that a user or subscriber sometimes wishes to communicatewith and does so by accessing the Contacts List to discover and use theinformation associated with the one or more Contacts being contacted.Contacts Lists generally include a plurality of entries, typicallystored on a data storage device such as computer memory or tape oroptical media in a data structure such as a database. Contacts andcontact information relating to the Contacts may be accessed, deleted,edited, created or searched as needed.

Contact information can include an organized data structure havingentries associated with each entity or person (Contact) in the ContactsList. The entries can include contact information such as the Contact'sname, telephone number, home and work postal addresses, and specificallyin the present context may include one or more network addressesidentifying a location on a network at which the Contact may be reached.Still more specifically in the present context, the network address mayidentify the Contact uniquely. That is a Contact may be associated witha network address that no other entity or machine is associated with.Alternately, a Contact can be a shortcut to contacting a group ofindividuals, entities or machines such that establishing a communicationwith such a Contact results in the distribution of the communication toeach available member of the group. Alternatively, a Contact can have anetwork address that is pseudo-unique and can indicate any communicationdevice coupled to a terminal connection associated with the networkaddress. Methods for terminating communication connections vary,sometimes by the nature of the hardware and protocols employed in thespecific communication channel.

Another function or service of Server 110 can be to facilitate theestablishment or maintain and manage a communication link between twopeer devices. For example, Server 110 can establish communication thatbridges PSTN 140 and Data Network 120. In some embodiments this iscarried out over two communication ports of Server 110, one port forexchanging information with PSTN 140 using a first PSTN compatiblecommunication protocol such as the SS7, and a second port for exchanginginformation with Data Network 120 using a second Data Network-compatiblecommunication protocol such as TCP being sometimes a VoIP communication.

The Data Network 120 can be for example the Internet and the second DataNetwork-compatible communication protocol can be for example theInternet Protocol (IP) or related protocol. Clients or server softwarerunning on a processor and executing instructions stored in acomputer-readable medium on Server 110 or coupled thereto can implementthe communications over the communication ports. Hardware and/orsoftware can be used to couple the communication signals and informationincluded therein between the first (PSTN) Network 140 and the second(Data) Network 120.

According to one or more embodiments, First Peer Telephone 150 receivesfrom Server 110 a full or partial Contacts List or contact informationderived therefrom. The contact information is indicated on First PeerTelephone 150 in some fashion that allows selection of a particular oneor more contacts for communication. For example, the contact informationmay be displayed on a display screen or other display apparatus on orcoupled to First Peer Telephone 150. Typically, a user of First PeerTelephone 150 can see or hear or otherwise perceive the information fromthe Contacts List as displayed by First Peer Telephone 150. The user canthen use a user interface such as a keypad, mouse, joystick, touchscreen, voice-activated input or other input device to select one ormore contacts from the displayed list with which to establishcommunication. Likewise, in the case of incoming communication receivedat First Peer Telephone 150, the user may determine an identity of acaller associated with the Contacts List.

Generally, it can be considered that correlated caller-callee contactsinformation is kept on the Server 110 in a server contacts list and onFirst Peer Telephone 150 in a mobile version of the contacts list thatis associate therewith.

Server 110 is designed and configured to recognize a connection requestsignal from First Peer Telephone 150. The connection request includes acontact identifier or information identifying one or more contacts froma Contacts List on Server 110. The connection request signal may be sentto Server 110 from First Peer Telephone 150 by any means ofcommunication established between Server 110 and First Peer Telephone150, e.g., dual tone multi-frequency (“DTMF’) tones transmitted over thevoice channel, or out-of-band DTMF tones, or an independent datacommunication path, or general packet radio service (“GPRS”) utilized inconjunction with a synchronizing mechanism as described later. Theconnection request signal informs a program running on Server 110 thatthe user of First Peer Telephone 150 wishes to establish a communicationwith the selected contact or contacts from the Contact List.

Server 110 is also designed and configured to respond to the connectionrequest signal by looking up an address for the selected contact orcontacts indicated in the connection request signal. The address is aSIP address in some embodiments and is intended for establishing a SIPcommunication between at least Server 110 and a voice over IP (VoIP)enabled computer 160. Once Server 110 and the desired VoIP enabledcomputer 160 are connected over Data Network 120, bridging ofcommunication between First Peer Telephone 150 and VoIP enabled computer160 through Server 110 can take place. This system and method forconnecting the first device (First Peer Telephone 150) and the seconddevice (VoIP enabled computer 160) through Server 110 is generallyconsidered a “direct” connection, although it is understood that severalintermediary hardware, software, and network interfaces will typicallyexist between the above primary components to establish a practicalcommunication connection between the first and second devices asdiscussed herein and known to those skilled in the art.

Another system and method for connecting the first and second devices,generally referred to as an “indirect” connection can be used as wellaccording to FIG. 4. In these embodiments, Server 110 connects FirstPeer Telephone 150 to First Peer Computer 100. And First Peer Computer100 connects to VoIP enabled computer 160. Accordingly, both Server 110and First Peer Computer 100 are used to establish the communicationbetween First Peer Telephone 150 and VoIP enabled computer 160. HereFirst Peer Computer 100 may belong to the same entity or user as FirstPeer Telephone 150 and may contain or have access to codes or datarequired for establishing a successful communication between the firstand second devices.

Establishing communication between the first and second devices can beaccomplished by following the steps outlined in the FIG. 5. These stepsdo not necessarily need to be performed in the same order as that shown,and additional steps may be performed beyond those illustrated in someembodiment, or some of the illustrated steps may be combined or deletedas called for by the specific instance at hand.

In step 601, a user of the First Peer Computer 100 uploads the list ofcontacts (“buddies”) from the First Peer Computer 100 to the Server 110.This list of contacts links the contact's identification information(first name, last name or user handle) with the contact's networkaddress and access code. In one embodiment, the contact's access code isa unique identifier, assigned to each contact. First Peer Computer 100,may be coupled to the network, and coupled to Server 110, and in factthe uploading of the Contact Lists that First Peer Computer 100 performsmay be alternately be accomplished using Server 110.

In step 602, the user of the First Peer Telephone 150 sends a contactname and an associated access code, uniquely identifying First PeerTelephone 150, such as a pre-assigned session-ID or in a differentembodiment the caller-id, to the Server 110.

In step 603, the user of the First Peer Telephone 150 connects to theServer 110 over the PSTN network 140. When the connection isestablished, in one embodiment, Server 110 provides the user with a dialtone or a voice menu. In another embodiment, no sound is transmitted,but Server 110 waits in silence for DTMF tones. In yet anotherembodiment, neither voice menu nor dial tone are provided.

In step 605, the user of the First Peer Telephone 150 sends a contactaccess code, uniquely identifying the contact, to the Server 110. In analternate embodiment, the contact access code is determined by analyzingthe caller ID identifying First Peer Telephone 150, and the contact namesent in step 602.

In step 607, the Server 110 determines if it can connect to the VoIPenabled computer identified by the contact access code. If suchcommunication is possible, step 609 is performed. If such communicationis not possible, step 611 is performed.

In step 609, the Server 110 connects to the VoIP enabled computer 160.

In step 611, the Server 110 forwards the connection request, includingthe contact access code, to the First Peer Computer 100.

In step 613, the First Peer Computer 100 connects to the First PeerTelephone 150.

In step 615, the First Peer Computer 100, based on the contact accesscode received, or determined, from the Server 110, connects to the VoIPenabled computer 160.

In step 617, the First Peer Computer 100 bridges the connection betweenthe VoIP enabled computer 160 and the First Peer Telephone 150.

First Peer Telephone 150 establishes a connection with the Server 110,using the PSTN network. A user of the First Peer Telephone 150, with thehelp of the software application running on the First Peer Telephone 150selects a particular contact and sends the contact information to theServer 110.

In one embodiment Server 110 is capable of communicating with members ofthe PSTN network 140 as well as with the members of the Data Network120. In this embodiment, Server 110 connects to two devicessimultaneously (First Peer Telephone 150 and the VoIP enabled computer160). Once both connections are established, Server 110 bridges themtogether, thereby creating a communication channel between a First PeerTelephone 150 and the VoIP enabled computer 160.

In one embodiment, Server 110 receives a contact access code from theFirst Peer Telephone 150. The Server 110 identifies the user of theFirst Peer Telephone 150 either by using a caller id or logininformation, provided by the First Peer Telephone 150. In oneembodiment, Server 110 uses the contact access code and the userinformation to retrieve the contact's record from the contact listdatabase (or any other record keeping system, such as a text file or aspread sheet). Server 110 uses the network address of the VoIP enabledcomputer 160, stored in the contact record, to establish a communicationwith this device.

In one embodiment, Server 110 notifies a First Peer Computer 100 that aFirst Peer Telephone 150 has requested a communication with the contactidentified by the contact access code. In this embodiment, Server 110may also forward the contact access information to the First PeerComputer 100.

In one embodiment, First Peer Computer 100 uses the contact addressinformation to establish a communication with the VoIP enabled computer160 via the Data Network 120. After the communication with the VoIPenabled computer 160 is established, the First Peer Computer 100 bridgesthe connection between the VoIP enabled computer 160 and the First PeerTelephone 150.

One aspect of the present invention allows users to integrate multiplecontact lists stored on different devices. Generally, contact listsassociate contact information (contact name, alias, etc.) with thenetwork address of the contact. For instance, a contact list stored onthe cellular phone may associate a contact Joe Smith with the phonenumber 617-123-1234. Similarly a contact list stored in the VoIP devicemay associate a contact “Smith” with the Internet Protocol address“66.249.64.15.”

Users of VoIP, PSTN and wireless devices generally maintain a separatecontact list on each communication device. A contact list stored on onedevice sometimes cannot be accessed from another. For instance, acontact list stored on the VoIP enabled computer is not accessible by auser of a wireless phone. Similarly, a contact list stored on one VoIPenabled computer 160 is often inaccessible from another VoIP enabledcomputer.

In one embodiment, the contact list information from multiple devicescan be combined in a database table with the following fields: USER_ID,CONTACT_ID, CONTACT_NAME, CONTACT_ADDRESS and NETWORK_ID.

By way of example, a USER_ID field uniquely identifies the user thateach contact record belongs to. So USER_ID 1 may be associated withCONTACT_ID 1 and CONTACT_ID 2. Similarly, USER_ID 2 may be associatedwith CONTACT_ID 3 and CONTACT_ID 4.

The CONTACT_ID uniquely identities each contact record. The CONTACT_NAMEstores the contact's first and last name information that can berecognized by the user. In other embodiments, this information can bestored in multiple fields, such as CONTACT_FIRST_NAME,CONTACT_LAST_NAME, etc.

The CONTACT_ADDRESS stores the network address of the contact. Forexample, CONTACT_ID 1 may be associated with a CONTACT_ADDRESS, e.g.,204.167.72.87. Similarly, CONTACT_ID 2 may be associated with aCONTACT_ADDRESS, e.g., 204.167.72.88.

In one embodiment, the format of the CONTACT_ADDRESS is different foreach network. For instance, members of PSTN networks are identified by a3 digit country code+3 digit city area code+7 digit phone number.Members of the VoIP networks are identified by a 12 digit IP address, anemail of the user or a special code aligned to the VoIP enabled computerby the VoIP service provider.

The NETWORK_ID information uniquely identifies a physical or virtualnetwork where a contact is located. Generally, a physical network is acollection of devices that communicate with each other over a wire or aradio signal. An example of the physical network would be a PSTN networkor a wireless network. A virtual network is: a network of interconnecteddevices that is limited by the membership or protocol rules. In oneembodiment, based on the NETWORK_ID the Server 110 determines the properway to communicate with the contact.

Server 110 then may be responsible for instructing first peer telephone,in a mode of best communication with the destination. In anotherembodiment, Server 110 provides this information (e.g., NETWORK_ID) toFirst Peer Telephone 150, where a supervised decision is made. Forexample, Server 110 may provide three options: “call Joe on Cell,” “callJoe using VoIP,” or “call Joe on wireline.” Software on First PeerTelephone 150 queries the user of First Peer Telephone 150 to determinewhich mechanism to use to call Joe.

Reference is now made to FIG. 6. During the initial setup, a user of theFirst Peer Computer 250 uploads a contact list of (“buddies”) from theFirst Peer Computer 250. First Peer Computer 250 may be the same asServer 280, the two being merely logically separate, and First PeerComputer 250 may reside in the data network alongside Server 280.Alternatively, it may be physically and geographically remote fromServer 280. As a result, a contact address database (the “Buddy Map”)210 on the Server 280 is updated to reflect that a particular user,identified by a unique USER_ID, uploaded a list of contacts, whereineach contact is identified by a CONTACT_ID, each CONTACT_ID isassociated with a CONTACT_ADDRESS information, and each CONTACT_ADDRESSinformation is associated with a particular NETWORK_ID.

In one embodiment, the First Peer Computer 250 runs a Buddy Uploader 200software application. The Buddy Uploader 200 has access to a list ofcontacts (“Buddies”). This list comprises contact demographicinformation, such as first and last name, age, mailing address, etc.This list also comprises a network address where a contact can bereached. Depending on the network, the address can be in the form of aphone number, IP address, email, alias, etc. The address can further beassociated with a particular communication network where the contact islocated.

In another embodiment, the Buddy Uploader 200 imports the contact listfrom a specific communication application. For instance, the BuddyUploader 200 can use software interfaces to retrieve the list of“buddies” from various commercially available voice communicationapplications.

The Buddy Uploader 200 sends the list of contacts to the Server 280. Thecontact information can be transferred either by a “push” or “pull”communication technique. For instance, if “push” communication techniqueis used, the Buddy Uploader 200 establishes a connection with the Server280 and transfers the list of contacts to the Server 280. If “pull”communication technique is used, the Server 280 is responsible forcontacting the First Peer Computer 250 and retrieving the contact listfrom the First Peer Computer 250.

Updates of the Contacts List, including First Peer Telephone retrievingfrom the database, via the server, are done in a periodic fashion. Theperiod, i.e. how often an update occurs, is preferably determined by theserver. Thus in one embodiment, first peer telephone requests a ContactsList immediately alter login, the Contacts List is returned by theServer to First Peer Telephone along with a REFRESH RATE, the REFRESHRATE specifies when First Peer Telephone should next request a buddylist. In this manner the Server can specify that the next refresh shouldoccur at a period different than the previous refresh interval.

The First Peer Computer 250 also has switching functionality 240 that,in one embodiment, forwards the signal from the incoming call to theVoIP enabled computer 260. The switching functionality bridges thecommunication between the inbound caller (not shown on the figure) andthe VoIP enabled computer 260. In one embodiment, the switchingfunctionality is implemented using two different communicationinterfaces. The first interface is responsible for accepting theincoming connection, winch connects the caller to the First PeerComputer 250. The second interface is responsible for establishing theoutgoing connection, which connects the First Peer Computer 250 to theVoIP enabled computer 260. After both connections are established, theswitching functionality 240 bridges the link between the two.

FIG. 6. also shows a Server 280. In this embodiment, the Server 280comprises a Buddy Map 210, a Gateway 230 and a Registrar 220. The BuddyMap 210 stores the contact information received from the First PeerComputer 250. The Buddy Map 210 is initially populated by the First PeerComputer 250. In one embodiment, the Buddy Map 210 can be updated bymultiple users.

In one embodiment, a Gateway 230 forwards the signal received from theFirst Peer Computer 250 to the VoIP enabled computer 260. When Gateway230 receives a call from the First Peer Computer 250, in one embodiment,it authenticates a caller. The authentication can be performedautomatically by detecting the caller ID of the First Peer Computer 250.It may also be done manually, by requesting a First Peer Computer 250 tosupply a login and password information. In this was Gateway 230 can actas a load balance and call distribution solution, by directing calls totheir appropriate destination based on the caller and callee informationas available.

In another embodiment, a Gateway 230 determines whether it can establisha connection with the VoIP Enabled Computer 260 based on the informationstored in the Registrar 220. In one embodiment, this informationcomprises a list of contacts who can currently accept a phone call. TheRegistrar 220 information can be updated based on a request from theVoIP Enabled Computer 260.

FIG. 7 shows a system comprising a Remote Cellphone 300, connected tothe wireless network 320, Wireless Network 320 connected to the PSTNNetwork 325. PSTN Network 325 connected to a Data Network 350, using aVoice Gateway 340. Wireless Network 320 connected to the Data Network350, using the Data Gateway 330. In one embodiment, the Data Network 350also connects Server 310 with a Sub Server 315 and a VoIP EnabledComputer 360.

In one embodiment, devices residing on wireless network 320 can accessdevices residing on Data Network 350 by using two different gateways: aData Gateway 330 and a Voice Gateway 340.

The Data Gateway 330 provides a fast and secure way to transferinformation between the Remote Cellphone 300 and the Server 310. Forexample, Remote Cellphone 300 uses the Data Gateway 330 to send the userlogin information to the Server 310. In one embodiment, Server 310authenticates the user by matching the received user information to thelist of users authorized to access the Server 310. If the authenticationis successful, Server 310 sends a contact list, associated with the userto the Remote Cellphone 300. Remote Cellphone 300 displays a list ofcontacts to the user and the user selects a particular contact the userwants to call to.

In one embodiment, the Voice Gateway 340 is used by the Remote Cellphone300 for transmitting, over the PSTN network 325, a connection requestand the selected contact information to the Server 310. The Server 310may respond to the connection request with a dial tone or a menu, suchas is well known in the art of the interactive voice response systems(IVR).

In one embodiment, the Server 310 maps the received selected contactinformation to the address of the associated VoIP enabled computer 360and determines if the VoIP enabled computer 360 is accessible from theServer 310. If so, Server 310 connects to she VoIP enabled computer 360and bridges the connection between the VoIP enabled computer 360 and theRemote Cellphone 300.

In one embodiment, Server 310 delegates the connection managementservices to the Sub-Server 315. The Server 310 forwards thecommunication request and the selected contact information to theSub-Server 315. In one embodiment, the Sub Server is selected based onthe destination contact information. For example, destination contactsthat reside in one geographical area are contacted using one Sub-Server,while destination contacts residing in another geographical area arecontacted using another Sub-Server.

In one or more embodiments, the communication request from the RemoteCellphone 300 is uniquely identified by the Session ID information. ASession ID information identities a particular connection request by aparticular user. If the same communication device connects to the Server310 multiple times, a different Session ID is generated for eachconnection. In some embodiments, the connection request can beidentified by a combination of the Session ID and USER_ID information.

In yet other embodiments, the Remote Cellphone 300 transmits to theServer 310 a correlate string, which comprises a selected contact andsession information. The selected contact information, in oneembodiment, is represented by the unique identifier of the selectedcontact. The session information, in one embodiment, can be retrievedfrom the Server 310, using the Data Gateway 330. In other embodiments,the session information can be generated on the Remote Cellphone 300.

FIG. 8 shows a method for using the system shown in FIG. 7 according toone or more exemplary embodiments.

In step 701, the user sends the login information from the RemoteCellphone 300 to the Server 310 via a Data Gateway 330.

In step 703, the Server 310 redirects to a Sub Server 315. In step 704the Sub Server 315 provides the Remote Cellphone 300 with a Session ID.

In step 705, the Sub Server 315 sends the contact list, including aunique contact id associated with each contact, along with the sessionID and a refresh rate, to the Remote Cellphone 300.

In optional step 706, Remote Cellphone performs periodic refreshes ofthe contact list as specified in the ‘refresh rate’ returned bySub-server 315.

In step 707, the contact list is presented to the user of the RemoteCellphone 300. The user of the Remote Cellphone 300 uses the buttons ofthe phone and selects a contact to call.

In step 709, the software running on the Remote Cellphone 300 creates astring that comprises a Session ID received from the Server 310 and aunique contact id of the contact selected by the user.

In step 711, the Remote Cellphone 300 connects to the Data Gateway 340,which passes the correlate string to the Sub Server 315.

In step 713, the Sub Server 315 receives the correlate string andextracts the Session ID and the unique Contact ID information.

In step 715, the Sub Server 315 uses the unique Contact ID (CONTACT_ID)and the Session ID to determine the network address of the Contact thatthe user is trying to reach.

In Step 716, Remote Cellphone 300 creates a Voice Channel to Sub Serverand, the Sub Server 315 connects to the contact.

FIG. 9 illustrates another exemplary embodiment of the present inventionthat employs Personal Exchange Router 405, capable of switching androuting communication traffic between two or more networks. For example,the Personal Exchange Router 406 may switch the signal received from theRemote Cellphone 410 to a phone, connected on a local network, such as aBluetooth Phone 406.

The connection from the Remote Cellphone 410 to the Bluetooth Phone 406is established based on a short code transmitted from the RemoteCellphone 410 to the Personal Exchange Server 495. In one embodiment,the Personal Exchange Server 495 forwards the signal to the PersonalExchange Router 405 that uses the Interactive Voice Response (IVR)system to identify a short code associated with the Bluetooth Phone 406.

FIG. 10 shows a method for using a one embodiment of the system shown onFIG. 9 according to one or more exemplary embodiments.

In step 801, the user installs the Personal Exchange Router 405 softwareon the First Personal Computer 400.

In step 803, the user employs a remote device, such as a RemoteCellphone 410, to send a trigger to the Personal Exchange Server 495.

In step 805, the Personal Exchange Router 405 detects the trigger sentto the Personal Exchange Server 495 by the Remote Cellphone 410.

In step 807, the Personal Exchange Router 405 initiates thecommunication with the destination device (the Bluetooth Phone 406),identified by the short code.

In step 809, the Personal Exchange Router 405 determines if the call istargeted to the First Personal Computer 400.

In step 811, the digital audio signal received from the Remote Cellphone410 is converted to the analog and outputted using an audio outputdevice.

In step 813, the signal is forwarded to the Bluetooth Phone 406.

FIG. 11 shows one embodiment of the First Personal Computer 500 thatruns the Personal Exchange Router application (505); and also processesthe audio signal. In one embodiment, the audio signal is processed withhelp of the Audio Bus 520, Audio Filter 518, Sound Card 514 and CSUAudio Device 516.

In one embodiment, the Personal Exchange Router 505 can simultaneouslycommunicate with multiple voice networks. For example, it may connect aUSB phone to one or more phone applications.

In one embodiment, the First Personal Computer 500 uses the Audio Bus520 to bridge the voice connection between the First Phone Application510 and the Second Phone Application 512. This functionality can beimplemented by, for example, using the steps outlined in FIG. 12.

FIG. 12 provides an example of a method for relaying the audio data atthe First Personal Computer 500 according to one or more exemplaryembodiments.

In step 850, First Phone Application 510 establishes a first phoneconnection.

In step 852, the Personal Exchanger Router 505 initiates a second phoneconnection via a Second Phone Application 512.

In step 854, the Personal Exchanger Router 505 configures virtual audiodevices, such as an Audio Bus 520.

In step 856 and 858, the Personal Exchange Router 505 uses the Audio Busto forward the audio signal from the First Phone Application 510 to theSecond Phone Application 512.

In step 860, the Personal Exchange Router 505 keeps monitoring bothphone connections.

In step 862, when either of the two connections terminates, the PersonalExchange Router 505 resets the call routing.

In one embodiment, the Personal Exchange Router 505 also supports theconference call functionality. The conference calls can be setup, forexample, by following the steps outlined on the FIG. 13.

FIG. 14 shows another aspect of the present invention. The Server 950 isconnected to a Data Network 952. The Data Network 952 is connected to aRouter Modem 954. The Router Modem 954 is connected to a Local Network956. The Local Network 956 is also connected to a Local PBX 958 andLocal Computer 960. A Local Network 956, in one embodiment, represents ahome wireless network. A Local Computer 960 runs a software applicationthat communicates with a software application running on the Local PBX958 via the Local Network 956.

In one embodiment, Local PBX 958 provides a termination point for one ormore voice networks, thereby making the Local PBX 958 available tocommunicate with each network. In one aspect of the present invention,the Local PBX 958 is provided with a network identifier, such as a phonenumber. Other members of the network may access the Local Network 956 byusing this phone number.

Local PBX 958 may be provided with a set of authorized phone numbers.Each number may be assigned a set of privileges, such as accessing avoicemail, a particular network or any other service provided in theLocal PBX 958.

Local PBX 958 forwards calls initiated by a voice communication devicewith access to the Local PBX 958, such as a Local Computer 960, using aspecific communication network. In one embodiment, the choice of thenetwork is based on the area code of the targeted phone number. Forexample, phone calls to me phone number starting from 617 are initiatedusing a first network, phone calls to the phone number starting from 718are initiated using a second network.

FIG. 15 illustrates one example of using the Local PBX 958 according toone or more exemplary embodiments.

In step 980, a Local PBX 958 establishes presence on multiple voicenetworks by, for example, notifying the voice communication serviceproviders that Local PBX 958 is ready to accept calls.

In step 982, a user connects to the Local PBX 958 by using a thin-clientapplication (not shown). In one embodiment, a thin-client application isa user interface that accepts user commands and sends them over a LocalNetwork 956 to the Local PBX 958. For example, a thin-client applicationmay be implemented using the HTML browser. The HTML browser acceptsuser's commands and forwards them to the Local PBX 958.

In step 984, Local PBX 958 receives a communication signal from a singlepoint, such as a thin-client, running on the Local Computer 960. Basedon this communication request, in one embodiment, it notifies allcommunication networks that a user is available to accept calls.

Various embodiments described herein provide one or more of thefollowing capabilities, which are discussed for illustrative purposesand are not limiting, but can be appreciated by those skilled in theart.

These and other capabilities of the invention, along with the inventionitself, will be more fully understood after a review of the followingfigures, detailed description, and claims.

This implementation is exemplary, however and not limiting of theinvention as other implementations in accordance with the disclosure arepossible.

In operation, referring to FIG. 5 a process for correlating a callerwith a callee using the system described herein includes the stagesshown. This process, however, is exemplary only and not limiting. Theprocess on FIG. 5 may be altered, e.g., by having stages added, removed,or rearranged.

In operation, referring to FIG. 10 a process for correlating a callerwith a callee using the system described herein includes the stagesshown, This process, however, is exemplary only and not limiting. Theprocess on FIG. 10 may be altered, e.g., by having stages added,removed, or rearranged.

In operation, referring to FIG. 12 a process for correlating a callerwith a callee using the system described herein includes the stagesshown. This process, however, is exemplary only and not limiting. Theprocess on FIG. 10 may be altered, e.g., by having stages added,removed, or rearranged.

In operation, referring to FIG. 13 a process for correlating a callerwith a callee using the system described herein includes the stagesshown. This process, however, is exemplary only and not limiting. Theprocess on FIG. 13 may be altered, e.g., by having stages added,removed, or rearranged.

In operation, referring to FIG. 13 a process for correlating a callerwith a callee using the system described herein includes the stagesshown. This process, however, is exemplary only and not limiting. Theprocess on FIG. 15 may be altered, e.g., by having stages added.removed, or rearranged.

In some embodiments of the above, an alphanumeric code may be used toidentify one or more of the caller or the callee. The alphanumeric codecan be any of the ASCII character set or a combination of a plurality ofcharacters from the ASCII set. The alphanumeric code can be limited tothe alphabetical characters “A” through “Z” or a subset thereof and aplurality of alphabetical characters. In other embodiments thealphanumeric code can include a plurality of characters from thealphabetical range “A” through “Z” and also the number range of integers“‘0” (zero) through “9.”

In other embodiments, a third (or fourth) server may be used to serveaddress or state presence information. For example a server thatincludes dynamic IP or network contact information or includes dynamicpresence state information can be used to provide such information tothe other servers or devices.

Also, in addition to communication between a mobile (telephone) and acomputer device, the present systems and methods apply to communicationbetween two mobile devices such as two cellular telephones.

The state information includes network presence (availability) and canindicate the actual possibility of communicating with a present andconnected device, as well as state information that is derived from apermission state set by a user of a device. The permission state canindicate the user's desire to be contacted or communicate or not, andmay be dependent on the caller's identity.

In another embodiment, voice traffic over standard circuit switchednetworks provides a large portion of voice communication. A remote user,caller, typically employs a remote mobile phone, such as a cell phone,to voice communicate with a destination, a callee. The destination ofthe callee is typically determined by the telephone number, DID (directinward dial), provided at call time to the service provider.

Enhanced services, such as voice mail, may be provisioned for a uniqueDID. Thus, enabling a remote user to dial the provisioned DID, such as*151, and reach the enhanced service's equipment.

Enhanced services, such as are described in applicants' U.S. ApplicationNo. 60/706,047, filed Aug. 8, 2005, and U.S. Application No. 60/718,305,filed Sep. 20, 2005, may also require an additional piece ofinformation, a callee address.

Conventional circuit switched networks provide limited mechanisms fortransferring data.

Reference is now made to FIG. 16, which is a simplified pictorialillustration of a system for caller callee correlation, constructed andoperative in accordance with a preferred embodiment of the presentinvention and to FIG. 17, which is a simplified flowchart illustrationof a method for caller callee correlation, operative in accordance witha preferred embodiment of the present invention. A user operating aremote cell phone 1001 logs onto the enhanced service, such as a VoiceInstant Messaging (VIM) service such as Skype®, by providing a usernameand password to an application resident on remote cell phone 1001. Theapplication preferably transmits the username password, preferablyencrypted, for example over an ‘HTTPS’ protocol, to a server 1110typically via a mobile network 1120 and a data gateway 1130.

Server 1110 preferably designates an appropriate resource to continueproviding service to the user, such as a sub-server 1115, and redirectsthe application on remote cell phone 1001 to the designated resource.For example, server 1110 may include multiple sub-servers 1115, in whichsub servers 1115 numbered 1 through 10 provide service to users whoseuser names begin with the alphanumeric characters ‘a-j, while sub-server1115 numbered 11 through 20 may provide service to users whose usernamesbegin with alphanumeric characters ‘k-z’. Sub server 1115 preferablyregisters the user on the enhanced service and assigns a session id tothe user. The session-id is returned to the application resident onremote cell phone 1001.

Remote cell phone 1001 may then request a contact list from sub server1110. Sub server 1100 preferably associates a unique contact id witheach contact and returns the contact name with its associated contact idto remote cell phone 1001.

The user typically selects a contact to call at which point theapplication resident on remote cell phone 1001 composes a CorrelateString that correlates the caller with the callee, such as byconcentrating the session id and the contact id of the selected contact.For example, it the user's caller-id is 1234 and the contact-id of theselected callee is 89, the application resident on remote cell phone1001 will create a Correlate String of 1234#89′. The ‘#’ is optionallyinserted to delimit between the caller information and the calleeinformation.

Remote cell phone 1001 preferably transmits the Correlate String to thecircuit switched network. This may take the form of an audiotransmission, such as DTMP tones transmitted on the voice channel, suchas such is described in greater detail in applicants' U.S. ApplicationNo. 60/706,047, filed Aug. 8, 2005, and U.S. Application No. 60/718,305,filed Sep. 20, 2005, or data transmission such as call signalinginformation transmitted by remote cell phone 1001 during call setup.

Remote cell phone 1001 may transmit call signaling information, such asa caller-id or a SIM card number, to the mobile network 1120 which inturn is passed to the circuit switched network. The current inventionproposes to modify the typical behavior, by dynamically setting the callsignaling information to the Correlate String,

When the call is terminated at sub-server 1115, sub-server is presentedwith the Correlate String, Sub-server parses the Correlate String anddetermines who the caller is and the callee is, typically by mapping thecontact-id associated with the session-id back to the contact nameassociated with the registered user. Sub server may then create a secondleg to the call or transfer the call, such as with a SIP redirect, tothe callee utilizing the caller's account.

Another embodiment of the present system provides a VOIP thin client. Incurrent technology, calls are sent over a circuit switched network in arelatively straight forward fashion. This system works when a phonenumber is being dialed. However, in a case where the callee destinationis a Skype ID, it is difficult or impossible for the circuit switchednetwork to direct the call to the desired SIP address. FIGS. 18 and 19disclose a system for VOIP communication having a gateway 2110 with aMapper element 2120. The Mapper 2120 describes the mapping of staticand/or dynamic DIDs as will be described more fully below.

In a first solution to this difficulty, a Prepare Call Method isprovided. In this method, when a user selects a buddy (for example butnot by way of limitation, a Skype Buddy) to contact, a data link is sentto the gateway (for example but not by way of limitation, a SkypeGateway) which contains the caller's MSISDN and the destination ID forthe callee. A Mapper that is built into the Skype gateway stores thisinformation. FIG. 20 illustrates the exemplary Mapper 2120 elementaccording to the present disclosure.

Referring below to the steps illustrated in exemplary method flowcharts21 through 23, a call is placed from the user's mobile device to theSkype gateway via a voice line (GSM). When the Skype gateway receivesthe voice call it compares the incoming caller MSISDN to the informationit has stored in the mapper (including a Caller MSISDN andCalleeSkypeID). When a direct match is found, the voice portion of thecall is sent over the Skype network to the desired SkypeID and aconnection is established.

As an example of the use of the Prepare Call Method, assume that Marywishes to contact Joe on his SkypeID, “joedimaggio”. She clicks hisSkypeID on her Skype buddy list. A Prepare Call is sent. First, a datalink is sent via the GGSN data network to the Skype Gateway where amapper stores Mary's incoming caller MSISDN plus the destination ID,“joedimaggio”. A voice call is originated from Mary's mobile phone andplaced via the (GSM voice network to the Skype Gateway. When the callcomes in to the Skype Gateway, the incoming caller MSISDN is comparedwith the information stored by the mapper. The call is then transferredproperly, and Mary's call rings through to Joe's Skype so they cancommunicate.

A second solution provides a Direct Dial Method. In this method, noPrepare Call is generated. Instead, a direct dial system is employed inone of two possible embodiments. In the case of static JDs, a unique,static DID (Direct Inward Dial number) is assigned to every contact orbuddy, e.g. each Skype buddy in the entire network, e.g. the Skypenetwork. When a user logs on to the Skype application and receives hislist of Skype contacts, also included are the unique DIDs that eachbuddy has been assigned. When a user selects to call a buddy's SkypeID,what is really dialed is the assigned Static DID. The call is thenprocessed as a standard circuit-switched call until it reaches the SkypeGateway. There, a mapper makes a one-to-one match between the callee DIDand the corresponding SkypeID. When this match is made, the call is thendirected to the preferred SkypeID and the call is completedsuccessfully.

As an illustration of the Direct Dial Method, if Mary wishes to contactJoe on his SkypeID, “joedimaggio”. She clicks his SkypeID on her Skypebuddy list. In the Skype network, Joe has been assigned a static DID of654. This is the number that is dialed when Mary clicks on Joe'sSkypeID. When the call reaches the Skype gateway, the mapper matches thecallee DID with the corresponding SkypeID and the call is connectedappropriately.

Now for the example of dynamic IDs under the present embodiment, ifinstead of a static DID being assigned to each Skype buddy, a dynamicDID is assigned. Instead of assigning each of the millions of Skypeusers a unique DID, every user is allocated a certain number of DIDs tobe assigned to each of the buddies on his Skype buddy list. However, theuser's own MSLSDN is appended to the Skype buddy's DID when the callgoes through. For example, the same numbers 1 to 1000 would be allocatedto every Skype user and would be mapped to the various Skype users oneach one's buddy list. When the user logs on to iSkoot/Skype, the mapperstores CallerMSISDN+CalleeDID as well as the corresponding SkypeID foreach buddy on the user's buddy list.

Note that when the phrase “every” and “each” user is employed in thiscontext, it can also be comprehended to mean every one of a limited setof users or a select or subset of users, such that “even” is referringto that subset of users. It is not intended to mean that each and everyuser of a network such as Skype, used only by way of illustration, isnecessarily involved in the present inventions, Alternatively, it couldbe considered that “substantially” every or each user from a selectedgroup of users is described by the present systems and methods.

When the user clicks to contact a buddy via a SkypeID, the dynamic DIDis dialed and the user's own MSISDN is appended along with it. The Skypegateway receives the call and the mapper then matches the incominguser's MSISDN and the callee DID with the corresponding Skype ID, andthe call is bridged successfully.

As an example of she Dynamic DID case, Joe is allocated 1000 DIDs to beassigned to his 1000 Skype buddies. Joe clicks to call Bob via hisSkypeID, “bobwhite”. Joe's mobile device dials Bob's assigned DID, whichis 345. When the call is handed over to the Skype Gateway, Joe's mobiledevice's MSISDN (97229951006) is appended to Bob's assigned DID (345)and this information is processed by the Mapper. The mapper makes amatch between the caller's MSISDN, the callee's assigned DID, and thedesignated Skype ID. The call is then directed to the desired Skype ID(bobwhite) and Joe can communicate with Bob.

As a further exemplary illustration of the above concept, a user, e.g.,Mary, is allocated the same 1000 DIDs as Joe was given, which areassigned to her own 1000 Skype buddies. Mary clicks to call Beth'sSkypeID, “bethany”. As it happens, the pre-assigned DID that wasallocated to Beth turns out to actually be the same DID that wassimultaneously allocated to Joe's buddy, Bob (345), When the call isplaced if contains Mary's MSISDN (2163219119) plus Beth's DID (345), Thecall is processed as a circuit-switched call until it reaches the SkypeGateway. At that point, the mapper in the Skype Gateway makes a matchbetween the caller's MSISDN, the callee's assigned DID, and thedesignated Skype ID. The call is then directed to the desired Skype IDand Mary can communicate with Beth.

Another embodiment of the present system and methods permits directdialing in the context of VoIP communication, and new or retrofittedservers and systems can be adapted to carry out the present exemplarymethods. Using the Direct Dial systems and methods, a subscriptionservice can be provided that will allow users to make VOIP (e.g., Skypeand SkypeOut) calls from low-end mobile phones. With the Direct Dialservice, it is possible to address a much larger target market of usersand devices. In some embodiments, users might not have presenceinformation, but they will be able to make calls to PC-based VOIP (e.g.,Skype) users and make low-cost long distance and international calls toregular telephones.

In some embodiments, a user can create a buddy list from his or hermobile phone. Once registered with an appropriate (e.g., iSkoot) serverand service, a direct dial service allows the user to access the iSkootweb-based telephone services. Note that the use of the iSkoot® mark andspecific service references is not meant as a limitation on the presentdisclosure, but only as an exemplary illustrative use for the purposesof better describing an exemplary embodiment of the present concepts.The same is true for the present use of the Skype® mark, which is onlyintended to be illustrative, and other examples can be provided andwould be appreciated by those skilled in the art.

A user accordingly can create a speed dial list 3400 as shown inillustrative FIG. 24. The speed dial codes can be generatedautomatically by the iSkoot server and assigned to the user's contacts,or the user can custom assign his or her own speed dial codes. A webbased interface is provided in an illustrative exemplary embodiment toallow for the registration and assignment of speed codes. In otherembodiments, virtual cards (vCards) can be used as a basis forgenerating speed codes to allow direct dialing of Skype contacts from amobile phone. Before calling the Skype buddies from a mobile phone, auser and/or the mobile device contacts and is confirmed with a iSkootserver or a server carrying its equivalent functionality.

FIG. 25 illustrates an exemplary user interface 3500 showing a requestfor speed dial codes, including an association thereto wish an emailaddress for a mobile device.

Other embodiments are within the scope and spirit if the invention. Forexample, due to the nature of software, functions described above can beimplemented using software, hardware, firmware, hardwiring, orcombinations of any of these. Features implementing functions may alsobe physically located at various locations, including being distributedsuch that portions of functions are implemented are different physicallocutions.

1. A method for establishing communication between a first device and asecond device, the method comprising; receiving, by a gateway, a datalink from the first device, wherein the data link comprises a mobilesubscriber integrated services digital network (MSISDN) numberassociated with a caller and a destination identifier associated with acallee, wherein the callee is associated with the second device, storingthe MSISDN number and the destination identifier, receiving, from thefirst device, a voice call comprising the MSISDN number, retrieving thedestination identifier corresponding to the MSISDN number associatedwith the received voice call, and establishing a communication link overthe network from the first device to the second device using thedestination identifier.
 2. The method of claim 1, wherein receiving thedata link comprises receiving a data link from the first device via aGGSN data network.
 3. The method of claim 1, wherein receiving the voicecall comprises receiving a voice call from the first device via a GSMvoice network.
 4. A system for establishing communication between afirst device and a second device, the system comprising: a serveradapted to communicate with a first device and a second device via anetwork, wherein the server comprises a gateway; and a computer-readablestorage medium in communication with the server, wherein thecomputer-readable storage medium comprises one or more programminginstructions for: receiving, by the gateway, a data link from the firstdevice, wherein the data link comprises a mobile subscriber integratedservices digital network (MSISDN) number associated with a caller and adestination identifier associated with a callee, wherein the callee isassociated with the second device, storing the MSISDN number and thedestination identifier, receiving, from the first device, a voice callcomprising the MSISDN number, retrieving the destination identifiercorresponding to the MSISDN number associated with the received voicecall, and establishing a communication link over the network from thefirst device to the second device using the destination identifier. 5.The system of claim 4, wherein the one or more programming instructionsfor receiving a data link comprise one or more programming instructionsfor receiving a data link from the first device via a GGSN data network.6. The system of claim 4, wherein the one or more programminginstructions for receiving a voice call comprise one or more programminginstructions for receiving a voice call from the first device via a GSMvoice network.
 7. An apparatus for establishing communication between afirst device and a second device, the apparatus comprising: means forreceiving, by a gateway, a data link from the first device, wherein thedata link comprises a mobile subscriber integrated services digitalnetwork (MSISDN) number associated with a caller and a destinationidentifier associated with a callee, wherein the callee is associatedwith the second device, means for storing the MSISDN number and thedestination identifier, means for receiving, from the first device, avoice call comprising the MSISDN number, means for retrieving thedestination identifier corresponding to the MSISDN number associatedwith the received voice call, and means for establishing a communicationlink over the network from the first device to the second device usingthe destination identifier.
 8. The apparatus of claim 7, wherein themeans for receiving the data link comprises means for receiving a datalink from the first device via a GGSN data network.
 9. The apparatus ofclaim 7, wherein the means for receiving the voice call comprises meansfor receiving a voice call from the first device via a GSM voicenetwork.
 10. A non-transitory computer-readable medium for establishingcommunication between a first device and a second device, comprising: atleast one instruction to receive, by a gateway, a data link from thefirst device, wherein the data link comprises a mobile subscriberintegrated services digital network (MSISDN) number associated with acaller and a destination identifier associated with a callee, whereinthe callee is associated with the second device, at least oneinstruction to store the MSISDN number and the destination identifier,at least one instruction to receive, from the first device, a voice callcomprising the MSISDN number, at least one instruction to retrieve thedestination identifier corresponding to the MSISDN number associatedwith the received voice call, and at least one instruction to establisha communication link over the network from the first device to thesecond device using the destination identifier.
 11. The non-transitorycomputer-readable medium of claim 10, wherein the at least oneinstruction to receive the data link comprises at least one instructionto receive a data link from the first device via a GGSN data network.12. The non-transitory computer-readable medium of claim 10, wherein theat least one instruction to receive the voice call comprises at leastone instruction to receive a voice call from the first device via a GSMvoice network.